import 'package:flutter/material.dart';
import 'package:get/get.dart';

import '../index.dart';

class PlantService extends GetxService {
  static PlantService get to => Get.find();

  // 获取植物列表
  Future<List<Plant>> get_plants() async {
    final List<Plant> plant_list = [];

    // 获取当前用户
    final username = Storage().get_string(Constants.current_user);
    if (username == null || username.isEmpty) {
      debugPrint("当前未登录，无法加载植物数据");
      return [];
    }

    // 从用户服务获取当前用户
    final current_user = UserService().get_now_user();
    if (current_user == null) {
      debugPrint("无法获取到用户数据，请确认是否已登录");
      return [];
    }

    debugPrint("当前用户: ${current_user.name}, 植物列表: ${current_user.plant_list}");

    // 获取当前用户的plantList
    final List<String>? current_user_plant_list = current_user.plant_list;
    if (current_user_plant_list != null && current_user_plant_list.isNotEmpty) {
      for (var item in current_user_plant_list) {
        final plant = await get_plant_by_id(item);
        if (plant != null) {
          plant_list.add(plant);
        }
      }
    } else {
      debugPrint("当前用户的植物列表为空");
    }

    debugPrint("加载了 ${plant_list.length} 个植物");
    return plant_list;
  }

  // 添加植物
  Future<void> add_plant(Plant plant) async {
    // 获取当前用户名
    final username = Storage().get_string(Constants.current_user);
    if (username == null || username.isEmpty) {
      debugPrint("当前未登录，无法添加植物");
      return;
    }

    // 从用户服务获取当前用户
    final current_user = UserService().get_now_user();
    if (current_user == null) {
      debugPrint("无法获取到用户数据，请确认是否已登录");
      return;
    }

    // 更新用户的植物列表
    final List<String> current_user_plant_list = current_user.plant_list ?? [];
    current_user_plant_list.add(plant.id);
    current_user.plant_list = current_user_plant_list;

    // 保存更新后的用户数据
    UserService().set_user(current_user);

    // 保存植物数据
    Storage().set_json("plant_${plant.id}", plant.toJson());

    debugPrint("添加的植物：${plant.name}");
  }

  // 根据植物id查询植物
  Future<Plant?> get_plant_by_id(String id) async {
    final json = Storage().get_json("plant_$id");
    if (json == null) return null;
    try {
      return Plant.fromJson(json);
    } catch (e) {
      debugPrint("解析植物数据出错: $e");
      return null;
    }
  }

  // 添加植物历史图片
  Future<void> add_plant_history_image(String plant_id, String image_path) async {
    final plant = await get_plant_by_id(plant_id);
    if (plant == null) return;

    plant.image_list[DateTime.now().toIso8601String()] = image_path;
    Storage().set_json("plant_$plant_id", plant.toJson());
  }
}
